﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using Tipler.DataSetler;
using Tipler.Siniflar;
using System.Text;
using IKYSWeb.Siniflar;
using Tipler.Enumlar;
using IsKurallari.Yetki;

/// <summary>
/// Summary description for AktifKullanici
/// </summary>
/// 
[Serializable]
public class AktifKullanici
{
    public AktifKullanici()
    {

    }

    public static string SessionID
    {
        get
        {
            if (HttpContext.Current.Session["AktifKullaniciSessionID"] == null)
                return "";
            return HttpContext.Current.Session["AktifKullaniciSessionID"].ToString();
        }
        set
        {
            HttpContext.Current.Session["AktifKullaniciSessionID"] = value;
        }

    }


    public static int KullaniciID
    {
        get
        {
            return Convert.ToInt32(HttpContext.Current.User.Identity.Name);
        }
    }

    //public static EnumYetkiGorevliOlduguYer AktifKullaniciTeskilat
    //{
    //    get
    //    {
    //        return (EnumYetkiGorevliOlduguYer)Convert.ToByte(HttpContext.Current.Session["AKTIFKullaniciMERKEZTASRA"]);
    //    }
    //    set
    //    {
    //        HttpContext.Current.Session["AKTIFKullaniciMERKEZTASRA"] = value;
    //    }
    //}

    public static string AktifKullaniciBirim
    {
        get
        {
            if (HttpContext.Current.Session["AKTIFKullaniciBIRIMI"] != null)
                return HttpContext.Current.Session["AKTIFKullaniciBIRIMI"].ToString();
            else
                return null;
        }
        set
        {
            HttpContext.Current.Session["AKTIFKullaniciBIRIMI"] = value;
        }
    }
    public static bool LdapIleGirisYapti
    {
        get
        {
            if (HttpContext.Current.Session["LdapIleGirisYapti"] != null)
                return Convert.ToBoolean(HttpContext.Current.Session["LdapIleGirisYapti"]);
            else
                return false;
        }
        set
        {
            HttpContext.Current.Session["LdapIleGirisYapti"] = value;
        }
    }

    public static string AktifKullaniciBirimID
    {
        get
        {
            if (HttpContext.Current.Session["AKTIFKullaniciBIRIMID"] != null)
                return HttpContext.Current.Session["AKTIFKullaniciBIRIMID"].ToString();
            else
                return null;
        }
        set
        {
            HttpContext.Current.Session["AKTIFKullaniciBIRIMID"] = value;
        }
    }

    public static KullaniciDataSet KullaniciBilgisi
    {
        get
        {
            return (KullaniciDataSet)HttpContext.Current.Session["AKTIFKullanici"];
        }
        set
        {
            HttpContext.Current.Session["AKTIFKullanici"] = value;
        }
    }

    public static KullaniciDataSet.KullaniciRow KullaniciBilgisiRow
    {
        get
        {
            return (KullaniciDataSet.KullaniciRow)((KullaniciDataSet)HttpContext.Current.Session["AKTIFKullanici"]).Kullanici.Rows[0];
        }
    }

    public static YetkiDataSet KullaniciYetkileri
    {
        get
        {
            if (HttpContext.Current.Session["AKTIFKullaniciYetki"] == null)
            {
                YetkiIsKurali oYetki = new YetkiIsKurali();

                FonksiyonSonuc<YetkiDataSet> fsYetki = oYetki.KullaniciYetkileriGetir(KullaniciID);

                if (fsYetki.HataVarMi)
                {
                    throw new Exception(fsYetki.Hata);
                }
                else
                {
                    HttpContext.Current.Session["AKTIFKullaniciYetki"] = fsYetki.Sonuc;
                }
            }
            return (YetkiDataSet)HttpContext.Current.Session["AKTIFKullaniciYetki"];
        }
        set
        {
            HttpContext.Current.Session["AKTIFKullaniciYetki"] = value;
        }
    }

    public static KullaniciKisayolDataSet KullaniciKisayollari
    {
        get
        {
            if (HttpContext.Current.Session["AKTIFKullaniciKisayolLAR"] == null)
            {
                YetkiIsKurali IKisayollar = new YetkiIsKurali();
                FonksiyonSonuc<KullaniciKisayolDataSet> fsKisayollar = IKisayollar.KullaniciKisayollariGetir(KullaniciID);

                if (fsKisayollar.HataVarMi)
                {
                    throw new Exception(fsKisayollar.Hata);
                }
                else
                {
                    HttpContext.Current.Session["AKTIFKullaniciKisayolLAR"] = fsKisayollar.Sonuc;
                }
            }
            return (KullaniciKisayolDataSet)HttpContext.Current.Session["AKTIFKullaniciKisayolLAR"];
        }
        set
        {
            HttpContext.Current.Session["AKTIFKullaniciKisayolLAR"] = value;
        }
    }

    public static MenuDataSet KullaniciMenuleri
    {
        get
        {
            if (HttpContext.Current.Session["AKTIFKullaniciMenu"] == null)
            {
                YetkiIsKurali oYetki = new YetkiIsKurali();

                FonksiyonSonuc<MenuDataSet> fsMenu = oYetki.KullaniciMenuleriGetir(AktifKullanici.KullaniciID);
                if (fsMenu.HataVarMi)
                {
                    throw new Exception(fsMenu.Hata);
                }
                else
                {
                    HttpContext.Current.Session["AKTIFKullaniciMenu"] = fsMenu.Sonuc;
                }
            }
            return (MenuDataSet)HttpContext.Current.Session["AKTIFKullaniciMenu"];
        }
        set
        {
            HttpContext.Current.Session["AKTIFKullaniciMenu"] = value;
        }
    }

    public static string KullaniciMenuStrGetir()
    {
        if (HttpContext.Current.Session["AKTIFKullaniciMenuSTR"] == null)
        {
            MenuDataSet dsMenu = new MenuDataSet();
            dsMenu = KullaniciMenuleri;

            StringBuilder str = new StringBuilder();

            foreach (MenuDataSet.MenuRow drMenu in dsMenu.Menu.Select("ParentID IS NULL", "Sira"))
            {
                str.Append("<li><a href=\"" + (drMenu.Uzanti == "#" ? "#" : VirtualPathUtility.ToAbsolute("~" + drMenu.Uzanti)) + "\">" + drMenu.MenuAdi + "</a>");
                if (dsMenu.Menu.Select("ParentID = '" + drMenu.MenuID.ToString() + "'").Length > 0)
                {
                    str.Append("<ul>");
                    AltMenuEkle(ref str, dsMenu, drMenu.MenuID);
                    str.Append("</ul>");
                }
                str.Append("</li>");
            }
            HttpContext.Current.Session["AKTIFKullaniciMenuSTR"] = str.ToString();
            return str.ToString();
        }
        else
        {
            return (string)HttpContext.Current.Session["AKTIFKullaniciMenuSTR"];
        }
    }

    private static void AltMenuEkle(ref StringBuilder str, MenuDataSet dsMenu, int PARENTMenuID)
    {
        foreach (MenuDataSet.MenuRow drMenu in dsMenu.Menu.Select("ParentID ='" + PARENTMenuID.ToString() + "'", "Sira"))
        {
            int AltMenuSayisi = dsMenu.Menu.Select("ParentID = '" + drMenu.MenuID.ToString() + "'").Length;
            if (drMenu.Uzanti.IndexOf('?') > 0)
                str.Append("<li><a href=\"" + (drMenu.Uzanti == "#" ? "#" : VirtualPathUtility.ToAbsolute("~" + drMenu.Uzanti.Substring(0, drMenu.Uzanti.IndexOf('?')))) + drMenu.Uzanti.Substring(drMenu.Uzanti.IndexOf('?'), drMenu.Uzanti.Length - drMenu.Uzanti.IndexOf('?')) + "\">" + drMenu.MenuAdi + "</a>");
            else
                str.Append("<li><a href=\"" + (drMenu.Uzanti == "#" ? "#" : VirtualPathUtility.ToAbsolute("~" + drMenu.Uzanti)) + "\">" + drMenu.MenuAdi + "</a>");
            if (AltMenuSayisi > 0)
            {
                str.Append("<ul>");
                AltMenuEkle(ref str, dsMenu, drMenu.MenuID);
                str.Append("</ul>");
            }
            str.Append("</li>");
        }
    }

    public static KullaniciYetkiliBolgeDataSet KullaniciYetkiliBolgeleri
    {
        get
        {
            if (HttpContext.Current.Session["AKTIFKullanici_YetkiLI_BIRIMLER"] == null)
            {
                YetkiIsKurali oYetki = new YetkiIsKurali();

                FonksiyonSonuc<KullaniciYetkiliBolgeDataSet> oSonucYetkiliBirimler = oYetki.KullaniciYetkiliBolgeGetirbyKullaniciID(KullaniciID);

                if (oSonucYetkiliBirimler.HataVarMi)
                {
                    throw new Exception(oSonucYetkiliBirimler.Hata);
                }
                else
                {
                    HttpContext.Current.Session["AKTIFKullanici_YetkiLI_BIRIMLER"] = oSonucYetkiliBirimler.Sonuc;
                }
            }
            return (KullaniciYetkiliBolgeDataSet)HttpContext.Current.Session["AKTIFKullanici_YetkiLI_BIRIMLER"];
        }
        set
        {
            HttpContext.Current.Session["AKTIFKullanici_YetkiLI_BIRIMLER"] = value;
        }
    }

    public static RaporDataSet KullaniciRaporlari
    {
        get
        {
            if (HttpContext.Current.Session["AKTIFKULLANICIRAPOR"] == null)
            {
                YetkiIsKurali oYetki = new YetkiIsKurali();

                FonksiyonSonuc<RaporDataSet> fsRapor = oYetki.KullaniciRaporlariGetir(KullaniciID);

                if (fsRapor.HataVarMi)
                {
                    throw new Exception(fsRapor.Hata);
                }
                else
                {
                    HttpContext.Current.Session["AKTIFKULLANICIRAPOR"] = fsRapor.Sonuc;
                }
            }
            return (RaporDataSet)HttpContext.Current.Session["AKTIFKULLANICIRAPOR"];
        }
        set
        {
            HttpContext.Current.Session["AKTIFKULLANICIRAPOR"] = value;
        }
    }
}
